/*
 * cm_multicast.h
 *
 *  Created on: 2014年9月17日
 *      Author: chens
 */

#ifndef CM_MULTICAST_H_
#define CM_MULTICAST_H_

#include <sys/types.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct cm_multicast cm_mcast;

/*
 * @brief	定义当收到数据时的处理函数
 */
typedef void (*mcast_proc)(const char *data, size_t size);

/*
 * @brief	创建一个可用于发送和接受multi cast的对象
 * @param	group_addr: D类IP地址
 * @param	local_addr: 本地接口
 * @param	port: 组播端口？
 * @param	proc: 用户处理组播数据的回调函数
 * @return	成功返回非NULL
 */
cm_mcast * mcast_create(const char *group_addr, const char * local_addr,
		unsigned short port, mcast_proc proc);

/*
 * @brief	销毁由 mcast_create 创建的对象
 */
void mcast_destroy(cm_mcast **m);

/*
 * @brief	将数据组播到网络
 * @param	由 mcast_create 创建的对象
 * @param	data,len: 将要发送的数据及其长度
 */
void mcast_send(cm_mcast *m, const char *data, int len);

#ifdef __cplusplus
}
#endif

#endif /* CM_MULTICAST_H_ */
